#!/bin/bash
CWD=$(cd `dirname $0`;pwd)
cd "${CWD}"
source _env

STAMP="$(date +%s)"

# return 0 if mini_mode is nil or 'no'/'false'/0
# 0 means true and 1 for false in bash
function is_mini_mode() {
  if test -z ${MINI_MODE}
  then
    return 1
  fi

  # convert MINI_MODE to upper case string(can work in bash 4.x)
  mini_mode=${MINI_MODE^^}
  if [ "x${mini_mode}" == "xNO" ] || [ "x${mini_mode}" == "xFALSE" ] || [ "x${mini_mode}" == "x0" ]; then
    return 1
  fi
  return 0
}

function remove_disk_check_logic_in_obd() {
  # make sure obd copy the plugin code
  obd cluster list
  start_check_file='/root/.obd/plugins/oceanbase/3.1.0/start_check.py'
  sed -i "s/critical('(%s) %s not enough disk space\. (Avail/alert('(%s) %s not enough disk space\. (Avail/g" $start_check_file
  sed -i "s/critical(EC_OBSERVER_NOT_ENOUGH_DISK_4_CLOG/alert(EC_OBSERVER_NOT_ENOUGH_DISK_4_CLOG/g" $start_check_file
}

[[ -f boot.yaml ]] && echo "find boot.yaml, skip configuring..." || {
  echo "generate boot.yaml ..."
  TMPFILE="boot.${STAMP}.yaml"

  if is_mini_mode
  then
    echo "oceanbase-ce docker in mini mode"
    cp -f boot-mini-tmp.yaml $TMPFILE
  else
    cp -f boot-tmp.yaml $TMPFILE
  fi

  sed -i "s|@OB_HOME_PATH@|${OB_HOME_PATH}|g" $TMPFILE
  sed -i "s|@OB_MYSQL_PORT@|${OB_MYSQL_PORT}|g" $TMPFILE
  sed -i "s|@OB_RPC_PORT@|${OB_RPC_PORT}|g" $TMPFILE
  sed -i "s|@OB_ROOT_PASSWORD@|${OB_ROOT_PASSWORD}|g" $TMPFILE

  [ "${OB_DATA_DIR}" ] && echo "    data_dir: ${OB_DATA_DIR}" >> $TMPFILE
  [ "${OB_REDO_DIR}" ] && echo "    redo_dir: ${OB_REDO_DIR}" >> $TMPFILE
  echo "create boot dirs and deploy ob cluster ..."
  mkdir -p $OB_HOME_PATH

  remove_disk_check_logic_in_obd
  obd cluster autodeploy "${OB_CLUSTER_NAME}" -c $TMPFILE \
    && obd cluster tenant create "${OB_CLUSTER_NAME}" -n ${OB_TENANT_NAME} \
    && obclient -h127.1 -uroot@${OB_TENANT_NAME} -A -P${OB_MYSQL_PORT} < init_tenant_user.sql \
    && mv -f $TMPFILE boot.yaml
}

[[ -f boot.yaml ]] && {
  echo "start ob cluster ..."
  obd cluster start $OB_CLUSTER_NAME
} && echo "boot success!" && exec /sbin/init
